package cn.e4j.core.shiro.service;

import cn.e4j.core.shiro.ShiroUser;
import cn.e4j.modular.system.entity.SysUser;
import org.apache.shiro.authc.SimpleAuthenticationInfo;

import java.util.List;

/**
 * 定义shirorealm所需数据的接口
 *
 * @author wenchuan.li
 * @date 2018/12/05 10:23
 */
public interface UserAuthService {

    /**
     * 根据账号获取登录用户
     *
     * @param account 账号
     */
    SysUser sysUser(String account);

    /**
     * 根据系统用户获取Shiro的用户
     *
     * @param user 系统用户
     */
    ShiroUser shiroUser(SysUser user);

    /**
     * 获取权限列表通过角色id
     *
     * @param roleId 角色id
     */
    List<String> findPermissionsByRoleId(Integer roleId);

    /**
     * 根据角色id获取角色名称
     *
     * @param roleId 角色id
     */
    String findRoleNameByRoleId(Integer roleId);

    /**
     * 获取shiro的认证信息
     */
    SimpleAuthenticationInfo info(ShiroUser shiroUser, SysUser user, String realmName);

    /**
     * 根据用户ID获取其名下具备的权限列表
     * 包括菜单初始化访问权限、功能操作类UI组件
     */
    List<String> getPermissionsByAccount(String account);



}
